package com.example.zxd;

import java.util.Scanner;

/**
 * 拿破仑传
 * 描述：
 * 《拿破仑传》是一部2023年美国史诗时代电影，由雷德利·斯科特执导，大卫·史卡帕编剧，杰昆·菲尼克斯领衔主演；菲尼克斯亦身兼监制。电影以法国著名军事家、政治家和改革家拿破仑·波拿巴的故事为背景，讲述拿破仑从普通军官到一代帝王，最终兵败滑铁卢黯然退出历史舞台的人生经历，以及他与皇后约瑟芬之间的爱情故事。
 *
 * 现在，拿破仑正在领兵出战，他的粮草最多可以支撑一定数量的士兵，但从各个军团来的士兵数量不同，且军团不可进一步分割。请你帮助拿破仑计算出他最多可以领兵出战的数量。
 *
 * 输入：
 * 输入的第一行包含两个整数 n
 *  和 C
 * ，表示军团的数量和粮草最大支撑的士兵数量，题目保证，1≤n≤30
 * ，1≤C≤20000
 * 。
 *
 * 接下来 n
 *  行，每行包含一个整数 mi
 * ，表示第 i
 *  个军团的士兵数量，1≤mi≤104
 * 。
 *
 * 输出：
 * 输出一行，包含一个整数，表示拿破仑最多可以领兵出战的数量。
 *
 * 样例输入：
 * 6 24
 * 8
 * 3
 * 12
 * 7
 * 9
 * 7
 * 样例输出：
 * 24
 * 注释：
 * 对于第一组样例，拿破仑最多可以领兵出战的数量为 24
 * ：第 1
 *  个不选，第 2
 *  个选，第 3
 *  个选，第 4
 *  个不选，第 5
 *  个选，第 6
 *  个不选，答案为 3+12+9=24
 * 。
 *
 * 题目保证，对于 20%
 *  的数据点，n≤3
 * 。
 *
 * 题目保证，对于 20%
 *  的数据点，每一个 mi
 *  的值完全相同。
 *
 * 题目保证，对于 40%
 *  的数据点，mi
 *  以升序或降序给出。
 *
 * 题目保证，对于 80%
 *  的数据点，n≤15
 * 。
 *
 * 题目保证，对于 100%
 *  的数据点，1≤n≤30
 * ，1≤C≤20000
 * ，1≤mi≤104
 * 。
 * @author: scarborough
 * @datetime: 2025/3/20 - 14:21
 * @status: AC
 */
public class PROB1038 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int c = sc.nextInt();
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = sc.nextInt();
        }

        int[] dp = new int[c + 1];
        for (int i = 0; i < n; i++) {
            for (int j = c; j >= arr[i]; j--) {
                dp[j] = Math.max(dp[j], dp[j - arr[i]] + arr[i]);
            }
        }
        System.out.println(dp[c]);
    }
}
